package org.myy.learn.hot.finish.哈希;

import java.util.*;

public class 字母异位词 {

    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for (String str : strs){
            char[] chars = str.toCharArray();//Todo char Character
            Arrays.sort(chars);  //ToDo 1——排序的是数组，不是str。    2——看源码，返回值是void,即对原值修改！
            String key = new String(chars);
            List<String> list = map.getOrDefault(key, new ArrayList<>());
            list.add(str);     //ToDo 看源码，返回值是boolean
            map.put(key, list);
        }
        return new ArrayList<>(map.values());  //ToDo 看源码，参数是collection
    }

    /**
     * 可读性弱
     * @param strs
     * @return
     */
//    public List<List<String>> groupAnagrams(String[] strs) {
//        Map<String, List<String>> map = new HashMap<>();
//        for (String str : strs){
//            Arrays.sort(str.toCharArray());
//            List<String> temp = new ArrayList<>();
//            if (map.containsKey(str.toString())){
//                temp = map.get(str.toString());
//                temp.add(str);
//                map.put(str.toString(), temp);
//            } else {
//                map.put(str.toString(), temp);
//            }
//        }
//        return new ArrayList<>(map.values());
//    }
}
